<?php

namespace Core\Common\Component\Cache;

/**
 * 缓存适配器
 * Interface CacheStore
 * @package App\Component\Cache
 */
interface CacheStore
{
    /**
     * @param string $key
     * @return mixed
     */
    public function get($key);

    /**
     * @param string $key
     * @param mixed $value
     * @param int $ttl
     * @return bool
     */
    public function set($key, $value, $ttl);

    /**
     * @param string[] $keys
     * @return mixed[]
     */
    public function mGet($keys);

    /**
     * @param array $items
     * @param int $ttl
     * @return bool
     */
    public function mSet($items, $ttl);

    /**
     * @param string $key
     * @return void
     */
    public function del($key);

    /**
     * @param string[] $keys
     * @return void
     */
    public function mDel($keys);

    /**
     * @return bool
     */
    public function flush();

    /**
     * @param string[] $names
     * @return TaggedCache
     */
    public function tags($names);
}